// miniprogram/pages/Home/home.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    loading:true,
    // 本月记账数据统计
    monthBookingData:{
      // 结余
      jieju:{
        int:0,
        decimal:'00',
      },
      // 收入
      sr:{
        int:0,
        decimal:'00'
      },
      // 支出
      zc:{
        int:0,
        decimal:'00'
      }
    },
    // 当月当日的记账数据
    currentBooking:{
      date:'',
      count:0,
      sr:0,
      zc:0,
    },
    // 存储当月当日的所有数据
    currentBookingData:[],

    // 当前的日期范围
    start:'',
    end:'',
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log('onload');
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    console.log("onshow");
    // 因为切换页面的时候会炸掉  数据会乱  所以每次进去都要重置
    this.setData({
      monthBookingData:{
        // 结余
        jieju:{
          int:0,
          decimal:'00',
        },
        // 收入
        sr:{
          int:0,
          decimal:'00'
        },
        // 支出
        zc:{
          int:0,
          decimal:'00'
        }
      },

      
    })
    // 获取初始日期01号
    this.getBookingDataByMonth();

    let currentDate=this.getCurrentDate();    
    let start=currentDate.split("-");
    start.splice(2,1,'01')
    this.setData({
      start:currentDate.split("-").splice(2,1,'01').join('-'),
      end:currentDate
    })
    // 获取当前日期
    this.getBookingDataByDate(currentDate);
  },

  // 获取当前的日期
  getCurrentDate()
  {
    let currentDate=new Date();
    let year=currentDate.getFullYear();
    let month=currentDate.getMonth()+1;
    month=month>=10?month:'0'+month
    let date=currentDate.getDate();
    date=date>=10?date:'0'+date
    return `${year}-${month}-${date}`
   
  },

  //获取本月记账数据
  getBookingDataByMonth()
  {
   let currentDate=this.getCurrentDate();
    //设置本月的开始时间  xx年xx月01日
   let start=currentDate.split('-');
   start.splice(2,1,"01");

   wx.showLoading({
    title: '加载中...',
    mask: true
  })

  //调用云端的云函数
  wx.cloud.callFunction({
    //云端的云函数名称
    name: 'get_booking_bymonth',
    data: {
      start: start.join('-'),
      end: currentDate
    }
  }).then(res => {
    //关闭加载提示
    wx.hideLoading();

    res.result.data.forEach(v => {
      this.data.monthBookingData[v.mainType.type].int += Number(v.money);
    })

    this.data.monthBookingData.jieyu.int = this.data.monthBookingData.sr.int - this.data.monthBookingData.zc.int;

    for (let key in this.data.monthBookingData) {
      let total = this.data.monthBookingData[key].int.toFixed(2);
      let t = total.split('.');
      this.data.monthBookingData[key].int = t[0];
      this.data.monthBookingData[key].decimal = t[1];
    }
    this.setData({
      monthBookingData: this.data.monthBookingData,
      loading: false
    })
  }).catch(err => {
    
  })
   

  },
  // 根据指定日期查询当天的记账数据
  getBookingDataByDate(currentDate)
  {
    // let currentDate=this.getCurrentDate();
        // 切换时间后清空前面一个时间的收入支出数据
        this.setData({
          currentBooking:{
            date:'',
            count:0,
            sr:0,
            zc:0,
          },
        })
        console.log(this.data.currentBooking);
    

    wx.showLoading({
      title: '加载...',
      mask:true,
    })

     //调用云函数
     wx.cloud.callFunction({
      name:'get_booking_bydate',
      data:{
        // start:start.join('-'),
        date:currentDate,
      },
    }).then(res=>{
      // 关闭加载提示
      wx.hideLoading();
      console.log('res==>',res);
      // 获取时间字符串转化为数组
      let date=currentDate.split('-');
      // 获取res支入输出的数据并做处理赋值给currentBooking 全局变量用于页面动态渲染
      this.data.currentBooking.count=res.result.data.length;
      this.data.currentBooking.date=`${date[1]}月${date[2]}日`
      res.result.data.forEach(v=>{
        // sr  money 获取
        this.data.currentBooking[v.mainType.type]+=Number(v.money);
        // 保留两位小数
        v.money=Number(v.money).toFixed(2);
      })
      //把数值赋值给全局变量 currentBooking的sr和zc  用于动态渲染
        this.data.currentBooking.sr=this.data.currentBooking.sr.toFixed(2);
        this.data.currentBooking.zc=this.data.currentBooking.zc.toFixed(2);

      // // 获取记账的支出收入结余数据
      // res.result.data.forEach(v=>{
      //   this.data.monthBookingData[v.mainType.type].int+=Number(v.money)
      // })
      // this.data.monthBookingData.jieju.int=this.data.monthBookingData.sr.int-this.data.monthBookingData.zc.int;
      // // 数字处理  分成整数和小数点
      // for(let key in this.data.monthBookingData)
      // {
      //   let total=this.data.monthBookingData[key].int.toFixed(2);
      //   let t=total.split('.');
      //   this.data.monthBookingData[key].int=t[0];
      //   this.data.monthBookingData[key].decimal=t[1];
      // }
      // console.log('this.data.monthBookingData==>',this.data.monthBookingData);
      
      // 响应数据
      this.setData({
        // 在绑定数据渲染在页面的时候再显示出来
        // 获取的记账数据
        // monthBookingData:this.data.monthBookingData,
        // 当天的时间
        currentBooking:this.data.currentBooking,
        // 当天的所有数据
        currentBookingData:res.result.data,
        loading:false
      })

      console.log("this.data.currentBooking==>",this.data.currentBooking);
      console.log("res.result.data==>",res.result.data);

    }).then(err=>{
      console.log('err==>',err);
    })
  },

  // 切换日期
  toggleDate(e)
  {
    let userDate=e.detail.value.split('-');
    console.log('userDate==>',userDate);
    userDate=`${userDate[1]}月${userDate[2]}日`;
    // 切换时间是查询到对应时间的支出收入
    if(userDate===this.data.currentBooking.date)
    {
      return;
    }
    // e.detail.value是时间
    this.getBookingDataByDate(e.detail.value)
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

})